home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / GIMP 2.6.8 / gimp-2.6.8-i686-setup.exe / {app} / share / gimp / 2.0 / scripts / difference-clouds.scm < prev    next >
Text File  |  2009-12-15  |  3KB  |  79 lines

  1. ; Plugin for the GNU Image Manipulation Program
  2. ; Copyright (C) 2006 Martin Nordholts
  3. ;
  4. ; This program is free software; you can redistribute it and/or modify
  5. ; it under the terms of the GNU General Public License as published by
  6. ; the Free Software Foundation; either version 2 of the License, or
  7. ; (at your option) any later version.
  8. ;
  9. ; This program is distributed in the hope that it will be useful,
  10. ; but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. ; GNU General Public License for more details.
  13. ;
  14. ; You should have received a copy of the GNU General Public License
  15. ; along with this program; if not, write to the Free Software
  16. ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17. ;
  18. ; Renders Difference Clouds onto a layer, i.e. solid noise merged down with the
  19. ; Difference Mode
  20. ;
  21.  
  22. (define (script-fu-difference-clouds image
  23.                                      drawable)
  24.  
  25.   (let* ((draw-offset-x (car (gimp-drawable-offsets drawable)))
  26.          (draw-offset-y (cadr (gimp-drawable-offsets drawable)))
  27.          (has-sel       (car (gimp-drawable-mask-intersect drawable)))
  28.          (sel-offset-x  (cadr (gimp-drawable-mask-intersect drawable)))
  29.          (sel-offset-y  (caddr (gimp-drawable-mask-intersect drawable)))
  30.          (width         (cadddr (gimp-drawable-mask-intersect drawable)))
  31.          (height        (caddr (cddr (gimp-drawable-mask-intersect drawable))))
  32.          (type          (car (gimp-drawable-type-with-alpha drawable)))
  33.          (diff-clouds   (car (gimp-layer-new image width height type
  34.                                              "Clouds" 100 DIFFERENCE-MODE)))
  35.          (offset-x      0)
  36.          (offset-y      0)
  37.         )
  38.  
  39.     (gimp-image-undo-group-start image)
  40.  
  41.     ; Add the cloud layer above the current layer
  42.     (gimp-image-add-layer image diff-clouds -1)
  43.  
  44.     ; Clear the layer (so there are no noise in it)
  45.     (gimp-drawable-fill diff-clouds TRANSPARENT-FILL)
  46.  
  47.     ; Selections are relative to the drawable; adjust the final offset
  48.     (set! offset-x (+ draw-offset-x sel-offset-x))
  49.     (set! offset-y (+ draw-offset-y sel-offset-y))
  50.  
  51.     ; Offset the clouds layer
  52.     (if (gimp-drawable-is-layer drawable)
  53.       (gimp-layer-translate diff-clouds offset-x offset-y))
  54.  
  55.     ; Show the solid noise dialog
  56.     (plug-in-solid-noise SF-RUN-MODE image diff-clouds 0 0 0 1 4.0 4.0)
  57.  
  58.     ; Merge the clouds layer with the layer below
  59.     (gimp-image-merge-down image diff-clouds EXPAND-AS-NECESSARY)
  60.  
  61.     (gimp-image-undo-group-end image)
  62.  
  63.     (gimp-displays-flush)
  64.   )
  65. )
  66.  
  67. (script-fu-register "script-fu-difference-clouds"
  68.                     _"Difference Clouds..."
  69.                     _"Solid noise applied with Difference layer mode"
  70.                     "Martin Nordholts <enselic@hotmail.com>"
  71.                     "Martin Nordholts"
  72.                     "2006/10/25"
  73.                     "RGB* GRAY*"
  74.                     SF-IMAGE       "Image"           0
  75.                     SF-DRAWABLE    "Drawable"        0)
  76.  
  77. (script-fu-menu-register "script-fu-difference-clouds"
  78.              "<Image>/Filters/Render/Clouds")
  79.